Introduction to desert niches

A systematic review of positive interactions and the niche in deserts.
The niche is a powerful concept in ecology and at times not entirely coupled to local interactions between species. Herein, we review the capacity for these positive plant interactions to expand the niche of subdominant species. We synthesized the available literature using a formalized systematic review by using the Web of Science and associated terms with niche, positive interactions in plants such as facilitation, and deserts.



Literature search & sort

library(tidyverse)
library(DT)

#Search terms####
search.terms <- read_csv("data/search.terms.csv")
datatable(search.terms)
total.lit <- search.terms %>% filter(search != "final")
total.lit
## # A tibble: 6 x 4
##   search                             terms  hits hits.2017
##    <chr>                             <chr> <int>     <int>
## 1      1     plant facilitat* niche* arid*    47        50
## 2      2   plant facilitat* niche* desert*    32        31
## 3      3          nurse plant* niche* arid    16        19
## 4      4        nurse plant* niche* desert    11        11
## 5      5 positive interact* niche* desert*    21        21
## 6      6   positive interact* niche* arid*    29        35
totals <- sum(total.lit$hits)
totals
## [1] 156
final.list <- 53
totals-final.list
## [1] 103
#PRISMA####
#use 'prisma' function from PRISMAstatement 
#https://cran.r-project.org/web/packages/PRISMAstatement/vignettes/PRISMA.html
prisma.report <-read_csv("data/prisma.csv")
prisma.report
## # A tibble: 53 x 4
##       ID inclusion                          category
##    <int>     <chr>                             <chr>
##  1     1         N no positive interactions recorded
##  2     2         Y                           include
##  3     3         Y                           include
##  4     4         N       no niche expansion recorded
##  5     5         Y                           include
##  6     6         N no positive interactions recorded
##  7     7         N no positive interactions recorded
##  8     8         N no positive interactions recorded
##  9     9         Y                           include
## 10    10         Y                           include
## # ... with 43 more rows, and 1 more variables: detailed.reason <chr>
exclusions <- prisma.report %>% filter(inclusion == "N") %>% select(ID, category)
dim(exclusions)
## [1] 24  2
library(PRISMAstatement)
#first search (2015)
prisma(found = 156,
       found_other = 0,
       no_dupes = 53, 
       screened = 53, 
       screen_exclusions = 0, 
       full_text = 53,
       full_text_exclusions = 24, 
       qualitative = 0, 
       quantitative = 29,
       width = 800, height = 800)
#second search (2017)
prisma(found = 196,
       found_other = 0,
       no_dupes = 70, 
       screened = 70, 
       screen_exclusions = 0, 
       full_text = 70,
       full_text_exclusions = 34, 
       qualitative = 0, 
       quantitative = 36,
       width = 800, height = 800)
#Summary of exclusions
categories <- exclusions %>% group_by(category) %>% tally() %>% arrange(desc(n))
categories
## # A tibble: 6 x 2
##                            category     n
##                               <chr> <int>
## 1                    no nurse plant     9
## 2 no positive interactions recorded     9
## 3       no niche expansion recorded     2
## 4                            review     2
## 5                          language     1
## 6                        not desert     1
ggplot(categories, aes(category, n)) + geom_bar(stat = "identity") + coord_flip() + ylim(0,10)

Search contrasts using DOI-matcher

search.1.1 <- read_csv("data/2016-search-total.csv")
search.1.2 <- read_csv("data/2017-search.csv")
net.difference <- anti_join(search.1.2, search.1.1, by = "DOI")
#net.difference <- net.difference %>% select(Title, DOI) #to simplify for a look
nrow(net.difference) #count of number of differences from consecutive search
## [1] 30
#write_csv(net.difference, "data/net.difference.csv")

#double-check
net.difference <- anti_join(search.1.2, search.1.1, by = "Title")
nrow(net.difference)
## [1] 59

Evidence synthesis

data <- read_csv("data/data.csv")
data
## # A tibble: 29 x 18
##       ID                                                         topic
##    <int>                                                         <chr>
##  1     2                                        Niche characterization
##  2     3                                        Niche characterization
##  3     5                             Niche partioning and interactions
##  4     9   Niche changes over ontogeny and inter-specific facilitation
##  5    10        Environmental niche: shade and rainfall of four shrubs
##  6    11                            Coexistence in grass-shrub steppes
##  7    15              Niche differentiation/segregation in a shrubland
##  8    16                   Niche partioning in tree-grass interactions
##  9    20    Niche partioning among shrub-annuals and biological crusts
## 10    21 Regeneration niche of six shrubs using one-week-old seedlings
## # ... with 19 more rows, and 16 more variables: `expansion
## #   mechanism` <chr>, niche.concept <chr>, application <chr>,
## #   niche.measurement <chr>, benefactor <chr>, benefactor.life.form <chr>,
## #   benefactor.family <chr>, beneficiary <chr>,
## #   beneficiary.life.form <chr>, beneficiary.family <chr>,
## #   ecosystem.detail <chr>, ecosystem <chr>, lat <dbl>, long <dbl>,
## #   country <chr>, elevation.m <int>
#map####
#ggplot2 vers
require(maps)
world<-map_data("world")
map<-ggplot() + geom_polygon(data=world, fill="gray50", aes(x=long, y=lat, group=group))
map + geom_point(data=data, aes(x=long, y=lat))

#wrangle 

data.simple <- data %>% group_by(niche.concept, ecosystem) %>% count()

ggplot(na.omit(data.simple), aes(niche.concept, n, fill = ecosystem)) + geom_bar(stat = "identity") + coord_flip() + scale_fill_brewer(palette = "Blues")

Interpretation